package wodegua.d24_file_io;

import java.io.*;

/**
 * 不同编码读取出现乱码的问题
 * 如果代码编码和被读取的文本文件的编码是一致的，使用字符流读取文本文件时不会出现乱码!
 * 如果代码编码和被读取的文本文件的编码是不一致的，使用字符流读取文本文件时就会出现乱码!
 *
 * InputStreamReader(字符输入转换流)
 * 解决不同编码时，字符流读取文本内容乱码的问题。
 * 解决思路:先获取文件的原始字节流，再将其按真实的字符集编码转成字符输入流，这样字符输入流中的字符就不乱码了
 *
 * 构造器
 * public InputStreamReader(InputStream is)     把原始的字节输入流，按照代码默认编码转成字符输入流(与直接用FileReader的效果一样)
 * public InputStreamReader(InputStream is,String charset)      把原始的字节输入流，按照指定字符集编码转成字符输入流(重点)
 *
 */
public class d19_IoInputStreamReaderTest {
    public static void main(String[] args) {
        try (
                InputStream is = new FileInputStream("helloworld-app/ab_gbk.txt");
                Reader isr = new InputStreamReader(is,"GBK");
                BufferedReader br = new BufferedReader(isr);
        ) {
            String line;
            while ((line = br.readLine()) != null) {
                System.out.print(line);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
